export const languageEnglish = {
    formating:{
        'main': "Main Prompt",
        'jailbreak': "Jailbreak Prompt",
        'chats': "Past Chats",
        'lorebook': "Lorebook",
        'globalNote': "Global Note",
        'authorNote': "Author's Note",
        'lastChat': "Last Chat",
        "description": "Character Description",
        'personaPrompt':'Persona Prompt',
        'plain': "Plain Prompt",
        'memory': "Supa/HypaMemory",
        'postEverything': "End-Injected Prompts",
    },
    errors:{
        toomuchtoken: 'Error: The minimum required token is greater than the Max Context Size.',
        unknownModel: 'Error: Unknown model selected',
        httpError: 'Error: error in request:',
        noData: 'There is no data in file, or the file is corrupted',
        onlyOneChat: 'There must be least one chat',
        alreadyCharInGroup: "There is already a character with the same name in the group.",
        noUserIcon: "You must set your icon first.",
        emptyText: "Text is empty.",
        wrongPassword: "Wrong Password",
        networkFetch: "This happens when the network is unstable or the server is down.",
        networkFetchWeb: "This can be a CORS error. this only happens when using web version dude to limitations of the browser. try using desktop local version, or other version of Risuai.",
        networkFetchPlain: "This can be a plain fetch error. try disabling force plain fetch option in settings.",
        requestLogRemoved: "This request log is removed.",
        requestLogRemovedDesc: "This request log removes when client is refreshed or reloaded.",
    },
    showHelp: "Show Help",
    help:{
        model: "Model option is a main model used in chat.",
        submodel: "Auxiliary Model is a model that used in analizing emotion images and auto suggestions and etc. gpt3.5 is recommended.",
        oaiapikey: 'Api key for OpenAI. you can get it in https://platform.openai.com/account/api-keys',
        mainprompt: 'The main prompt option sets the default model behavior.',
        jailbreak: 'The jailbreak prompt option activates when jailbreak toggle is on in character.',
        globalNote: 'a note that strongly effects model behavior, also known as UJB. works in all characters.',
        autoSuggest: 'Prompts used to generate options when automatically suggesting user responses.',
        formatOrder: "formating order of prompt. lower blocks does more effect to the model.",
        forceUrl: "if it is not blank, the request will go to the url that you had inputed.",
        tempature:"lower values make character follow prompts closely, but it will more likely to response like a machine.\nHigher values will result in creative behavior, but the character's response can break down more easily.",
        frequencyPenalty: "Higher values prevent the use of duplicate words in response, but character's response can break down more easily.",
        presensePenalty: "Higher values prevent the use of duplicate words in all context, but character's response can break down more easily.",
        sdProvider: "provider for image generation.",
        msgSound: "Plays *ding* sound when character responses",
        charDesc: "Brief description of the character. this effects characters response.",
        charFirstMessage: "First message of the character. this highly effects characters response.",
        charNote: "a note that strongly effects model behavior. embbedded to current character. also known as UJB.",
        toggleNsfw: "toggles jailbreak prompt on and off.",
        lorebook: "Lorebook is a user-made dictionary for AI. AI only sees it when where is an activation keys in the context.",
        loreName: "name of the lore. it dosen't effects the Ai.",
        loreActivationKey: "If one of the activation key exists in context, the lore will be activated and prompt will go in. seperated by commas.",
        loreorder: "If insert Order is higher, it will effect the model more, and it will more lessly cuted when activated lore are many.",
        bias:"bias is a key-value data which modifies the likelihood of string appearing.\nit can be -100 to 100, higher values will be more likely to appear, and lower values will be more unlikely to appear. \nAdditionaly, if its set to -101, it would work as 'strong ban word' for some models. \nWarning: if the tokenizer is wrong, it not work properly.",
        emotion: "Emotion Images option shows image depending at character's emotion which is analized by character's response. you must input emotion name as words *(like joy, happy, fear and etc.)* .emotion named **neutral** will be default emotion if it exists. must be more then 3 images to work properly.",
        imggen: "After analyzing the chat, apply the prompt to {{slot}}.",
        regexScript: "Regex Script is a custom regex that replaces string that matches IN to OUT.\n\nThere four type options."
            + "\n\n- **Modify Input** modifys user's input"
            + "\n\n- **Modify Output** modifys character's output"
            + "\n\n- **Modify Request Data** modifys current chat data when sent."
            + "\n\n- **Modify Display** just modifies the text when shown without modifying chat data."
            + "\n\nIN must be a regex without flags and without slashes in start and end.\n\nOUT is a string which can include replacement patterns. these are the patterns:"
            + "\n\n- $$\n\n    - inserts $"
            + "\n\n- $&\n\n    - inserts the matched substring."
            + "\n\n- $`\n\n    - inserts the portion of the string that precedes the matched substring."
            + "\n\n- $1\n\n    - inserts the first matching group. works with other number like 2, 3..."
            + "\n\n- $(name)\n\n    - inserts the named group"
            + "\n\nFor flags, you can not only use native supported flags, but also use these flags, which are designed for advanced users:"
            + "\n\n- `<inject>` - injects the result to the current string."
            + "\n- `<move_top>` - moves the result to the top of the string."
            + "\n- `<move_bottom>` - moves the result to the bottom of the string."
            + "\n- `<repeat_back>` - if the match is not found, it carries the result from the previous match."
            + "\n- `<order n>` - sets the order of the result. higher order will be shown first. `n` is a number. (like `<order 1>`) if this flag is not set, it will be set to 0."
            + "\n- `<cbs>` - parses curly braced synatxes in IN."
            + "\n\nTo use with native flags, you can use like `gi<cbs><move_top>`.",
        experimental: "This is a experimental feature. it might be unstable.",
        oogaboogaURL: "If your WebUI supports older version of api, your url should look *like https:.../run/textgen*\n\n"
            + "If your WebUI supports newVersion of api, your url should look like *https://.../api/v1/generate* and use the api server as host, and add --api to arguments.",
        exampleMessage: "Example conversations that effects output of the character. it dosen't uses tokens permanently."
            + "\n\nExample format of conversations:"
            + "\n\n```\n<START>\n{{user}}: hi\n{{char}}: hello\n<START>\n{{user}}: hi\nHaruhi: hello\n```"
            + "\n\n```<START>``` Marks the beginning of a new conversation.",
        creatorQuotes: "Note that appearances on top of first message. Used to inform users about this character. It doesn't go into prompt.",
        systemPrompt: "A prompt that replaces main prompt in settings if its not blank.",
        chatNote: "a note that strongly effects model behavior. embbedded to current chat. also known as memory or ujb.",
        personality: "A brief description about character's personality. \n\n**It is not recommended to use this option. Describe it in character description instead.**",
        scenario: "A brief description about character's scenario. \n\n**It is not recommended to use this option. Describe it in character description instead.**",
        utilityBot: "When activated, it ignores main prompt, jailbreak and other prompts. used for bot made for utility, not for roleplay.",
        loreSelective: "If Selective mode is toggled, both Activation Key and Secondary key should have a match to activate the lore.",
        loreRandomActivation: "If Use Probability Condition is abled, if the lore's other conditions are all met, the lore will be activated with a set probability which is set by 'Probability' each time a chat is sent.",
        additionalAssets: "Additional assets to display in your chat. \n\n - use `{{raw::<asset name>}}` to use as path.\n - use `{{image::<asset name>}}` to use as image\n - use `{{video::<asset name>}}` to use as video\n - use `{{audio::<asset name>}}` to use as audio\n    - recommended to put in Background HTML",
        superMemory: "SuperMemory makes your character memorize more by giving summarized data to AI.\n\n"
            + "SuperMemory model is a model that summarizes that text. davinci is recommended, and Auxiliary models are not recommended unless it is an unfiltered model with over 2000 tokens with great summarizing skill.\n\n"
            + "SuperMemory Prompt decides what prompt should be sent to summarize. if you leave it blank, it will use the default prompt. leaving blank is recommended.\n\n"
            + "After it is all setup, you can able it in the setting of a character.",
        replaceGlobalNote: "If its not blank, it replaces current global note to this.",
        backgroundHTML: "A Markdown/HTML Data that would be injected to the background of chat screen.\n\n you can also use additional assets. for example, you can use `{{audio::<asset name}}` for background music."
            + "\n\n Additionaly, you can use these with additional assets:"
            + "\n - `{{bg::<asset name>}}`: inject the background as asset",
        additionalText: "The text that would be added to Character Description only when ai thinks its needed, so you can put long texts here. seperate with double newlines.",
        charjs: "A javascript code that would run with character. for example, you can check `https://github.com/kwaroran/Risuai/blob/main/src/etc/example-char.js` CURRENTLY NOT RECOMMENDED TO USE DUDE TO SECURITY REASONS. EXPORTING WOULD NOT INCLUDE THIS.",
        romanizer: "Romanizer is a plugin that converts non-roman characters to roman characters to reduce tokens when using non-roman characters while requesting data. this can result diffrent output from the original model. it is not recommended to use this plugin when using roman characters on chat.",
        oaiRandomUser: "If enabled, random uuid would be put on user parameter on request, and would be changed on refresh. this can be used to prevent AI from identifying user.",
        inlayImages: "If enabled, images could be inlayed to the chat and AIs can see it if they support it.",
        metrica: 'Metric Systemizer is a plugin that converts metrics to imperial units when request, and vice versa on output to show user metric system while using imperial for performace. it is not recommended to use this plugin when using imperial units on chat.',
        lorePlus: "LoreBook+ is a experimental feature that uses vectordb instead of just string matching for better bot making experience and better matching performace.",
        topP: "Top P is a probability threshold for nucleus sampling. model considers the results of the tokens with top_p probability mass.",
        openAIFixer: "OpenAI Fixer is a plugin that fixes some of the problems of OpenAI.",
        sayNothing: "If enabled, it will input 'say nothing' when no string inputed.",
        showUnrecommended: "If enabled, it will show unrecommended, deprecated settings. it is NOT RECOMMENDED to use these settings.",
        imageCompression: "If enabled, it will compress images when exporting character. if animated images doesn't works, try disabling this option.",
        useExperimental: "If enabled, it will show some experimental features.",
        forceProxyAsOpenAI: "If enabled, it will force to use OpenAI format when using reverse proxy.",
        forcePlainFetch: "If enabled, it will use browser fetch api instead of native http request. this can cause CORS errors.",
        autoFillRequestURL: "If enabled, it will autofill request url to match the current model.",
        chainOfThought: "If enabled, it will add chain of thought prompt to the prompt.",
        gptVisionQuality: "This option is used to set the quality of the image detection model. the higher the quality, the more accurate the detection, but more tokens are used.",
        genTimes: "This option is used to set the number of responses to generate on support models. other then first response will be act as cached reroll. this can reduce the cost of the model, but it can also increase the cost if you use it without reroll.",
        requestretrys: "This option is used to set the number of request retrys when request fails.",
        emotionPrompt: "This option is used to set the prompt that is used to detect emotion. if it is blank, it will use the default prompt.",
        removePunctuationHypa: "If enabled, it will remove punctuation before executing HypaMemory.",
        additionalParams: "Additional parameters that would be added to the request body. if you want to exclude some parameters, you can put `{{none}}` to the value. if you want to add a header instead of body, you can put `header::` in front of the key like `header::Authorization`. if you want value as json, you can put `json::` in front of the value like `json::{\"key\":\"value\"}`. otherwise, type of the value would be determined automatically.",
        antiClaudeOverload: "If Claude overload happens, Risuai would try to prevent it by continuing with same prompt, making it less likely to happen. works only for streamed responses. this could not work for non-official api endpoints.",
        triggerScript: "Trigger Script is a custom script that runs when a condition is met. it can be used to modify the chat data, run a command, change variable, and etc. the type depends when it is triggered. it can also be run by buttons, which can be used with {{button::Display::TriggerName}}, or HTML buttons with `risu-trigger=\"<TriggerName>\"` attribute.",
        autoContinueChat: "If enabled, it will try to continue the chat if it doesn't ends with a punctuation. DONT USE THIS WITH LANGUAGES THAT DOESN'T USE PUNCTUATION.",
        combineTranslation: "If enabled, text that is one sentence but separated by HTML tags will be combined together and translated, then Modify Display script will be reapplied to the translated output.\nThis helps the translator to make the correct translation.\nIf the UI becomes weird when you enable this option, please turn off the option and report it.",
        dynamicAssets: "If enabled, if the asset name is not found when processing data, it will try to find the closest asset name by using vector search and replace it with the closest asset name.",
        dynamicAssetsEditDisplay: "If enabled, the dynamic assets will be applied to the Modify Display stage too. however, this can cause performance issues.",
        nickname: "Nickname would used be in {{char}} or <char> in chat instead of character's name if it is set.",
        useRegexLorebook: "If enabled, it will use regex for lorebook search, instead of string matching. it uses /regex/flags format.",
        customChainOfThought: "Warning: chain of thought toggle is no longer recommended to use. put chain of thought prompt in other prompt entries instead.",
        customPromptTemplateToggle: "Here you can define your own prompt toggles. use `<toggle variable>=<toggle name>` format, seperated by newline. for example, `cot=Toggle COT`. you can use these toggles in prompt by using `{{getglobalvar::toggle_<toggle variable>}}`. like `{{getglobalvar::toggle_cot}}`.",
        defaultVariables: "Here you can define your own default variables. use `<variable name>=<variable value>` format, seperated by newline. for example, `name=Risuai`, which then can be used with trigger scripts and variables CBS like `{{getvar::A}}`, `{{setvar::A::B}}` or `{{? $A + 1}}`. if prompt template's default variable and character's default variable has same name, character's default variable will be used.",
        lowLevelAccess: "If enabled, it will enable access to features that requires high computing powers and executing AI model via triggers in the character. do not enable this unless you really need these features.",
        triggerLLMPrompt: "A prompt that would be sent to the model. you can use multi turns and roles by using `@@role user`, `@@role system`, `@@role assistant`. for example, \n\`\`\`\n@@role system\nrespond as hello\n@@role assistant\nhello\n@@role user\nhi\n\`\`\`",
        legacyTranslation: "If enabled, it will use the old translation method, which preprocess markdown and quotes before translations instead of postprocessing after translations.",
        luaHelp: "You can use Lua scripts as a trigger script. you can define onInput, onOutput, onStart functions. onInput is called when user sends a message, onOutput is called when character sends a message, onStart is called when the chat starts. for more information, see the documentation.",
        claudeCachingExperimental: "Caching in Claude is experimental feature that can reduce the cost of the model, but it can also increase the cost if you use it without reroll. since this is a experimental feature, it can be unstable and behavior can be changed in the future.",
        urllora: "You can use direct download link of the model file. you can make direct url from google drive like website like https://sites.google.com/site/gdocs2direct/ , or use civitai URL, copy the the AIR (looks like `urn:air:flux1:lora:civitai:180891@776656` or just `civitai:180891@776656`) and paste it.",
        v2GetAlertSelect: "Options are separated by | (pipe) character.",
        v2RegexTest: "Returns 1 if the regex matches, 0 if it doesn't match.",
        v2Calculate: "Evaluates mathematical expressions with support for basic arithmetic (+, -, *, /, %, ^), comparison operators (<, >, <=, >=, =, !=), logical operators (&&, ||, !), parentheses for precedence, and variable substitution using $variableName format. Variables are automatically converted to numbers (defaults to 0 if invalid).",
        namespace: "Namespace is a unique identifier for the module. it is used to prevent conflicts between modules, and for interaction of presets, other modules and etc. if you are not sure what to put, leave it blank.",
        moduleIntergration: "You can enable modules by putting the module namespace in the module intergartion sections. if you want to enable multiple modules, you can seperate them by comma. for example, `module1,module2,module3`. this is for advanced users, who wants to vary the use of modules by presets.",
        customCSS: "Custom CSS for styling. you can also disable/enable it by pressing (Ctrl + .) if something goes wrong.",
        betaMobileGUI: "If enabled, it will use beta mobile GUI on small (less than 800px) screens. requires refresh.",
        unrecommended: "This is a unrecommended setting. it is not recommended to use this setting.",
        jsonSchema: "This is a JSON Schema that will be sent to the AI model if AI model supports JSON Schema.\n\nHowever, since JSON Schema is hard to learn, In Risuai, you can use subset of TypeScript interface instead of JSON Schema. Risuai will convert it in runtime." +
            "For example, if you want to send a JSON like this:\n\n```js\n{\n  \"name\": \"Risuai\", //name must be Risuai,\n  \"age\": 1, //age must be number,\n  \"icon\": \"slim\", //icon must be \'slim\' or 'rounded'\n  \"thoughts\": [\"Good View!\", \"Lorem\"] //thoughts must be array of strings\n}\n```\n\n" +
            "You can put this TypeScript interface:\n\n```typescript\ninterface Schema {\n  name: string;\n  age: number;\n  icon: \'slim\'|\'rounded\'\n  thoughts: string[]\n}\n```\n\n" +
            "Name of the interface doesn't matter. for more information, see the typescript documentation. (https://www.typescriptlang.org/docs/handbook/interfaces.html), and to Check what subset of TypeScript is supported, see the below." +
            "<details><summary>Supported TypeScript Subset</summary>\n\n" +
            `Supported types are \`boolean\`, \`number\`, \`string\`, \`Array\`. Advanced typing like unit types, intersection types, union types, optional, literal types, and etc. are not supported except for these cases:\n
        - Array of primitive types: (ex. \`string[]\`, \`Array<boolean>)\`
        - Unit types between strings: (ex. \`'slim'|'rounded'\`).

        Properties must be one in a line. if there is multiple properties in a line, it will throw an error. Properties and name of the interface must be only in latin characters, in ASCII range. name of the properties must not be surrounded by quotes or double quotes. Nesting inside the interface is not supported. it is not allowed to put \`{\` or \`}\` in the line that properties are defined. If you want to use more advanced types, use JSON Schema instead.
        ` +
            "</details>"
        ,
        strictJsonSchema: "If enabled, it will strictly follow the Provided Schema for JSON on some models. if it is disabled, it may ignore the JSON Schema.",
        extractJson: "If it is not blank, it will extract specific JSON data from the response. for example, if you want to extract `response.text[0]` in response `{\"response\": {\"text\": [\"hello\"]}}`, you can put `response.text.0`.",
        translatorNote: "Here, you can add a unique translation prompt for each character. This option only applies when using the Ax. model for translation. To apply it, include `{{slot::tnote}}` in the language settings. It doesn't work in group chats.",
        groupInnerFormat: "This defines a format that is used in group chat for characters that isn't speaker. if it is not blank, it will use this format instead of the default format. if `Group Other Bot Role` is `assistant`, it will also be applied to the speaker.",
        groupOtherBotRole: "This defines a role that is used in group chat for characters that isn't speaker.",
        chatHTML: "A HTML that would be inserted as each chat.\n\nYou can use CBS and special tags.\n- `<risutextbox>`: a textbox that would be used to render text\n- `<risuicon>`: an icon for user or assistant\n- `<risubuttons>`: icon buttons for chat edit, translations and etc.\n- `<risugeninfo>`: generation information button.",
        systemContentReplacement: "The prompt format that replaces system prompt if the model doesn't support system prompt.",
        systemRoleReplacement: "The role that replaces system role if the model doesn't support system role.",
        summarizationPrompt: "The prompt that is used for summarization. if it is blank, it will use the default prompt. you can also use ChatML formating with {{slot}} for the chat data.",
        translatorPrompt: "The prompt that is used for translation. if it is blank, it will use the default prompt. you can also use ChatML formating with {{slot}} for the dest language, {{solt::content}} for the content, and {{slot::tnote}} for the translator note.",
        translateBeforeHTMLFormatting: "If enabled, it will translate the text before Regex scripts and HTML formatting. this could make the token lesser but could break the formatting.",
        autoTranslateCachedOnly: "If enabled with Auto Translation option on, it will automatically translate only the messages that the user has translated previously.",
        presetChain: "If it is not blank, the preset will be changed and applied randomly every time when user sends a message in the preset list in this input. preset list should be seperated by comma, for example, `preset1,preset2`.",
        legacyMediaFindings: "If enabled, it will use the old method to find media assets, without using the additional search algorithm.",
        comfyWorkflow: "Put the API workflow of comfy UI. you can get your API workflow in comfy UI by pressing the 'Workflow > Export (API)' button. you must also put {{risu_prompt}} in you workflow text. the {{risu_prompt}} will be replaced with the prompt provided by the Risu.",
        automaticCachePoint: "Automatically creates cache point after the chat ends, if the caching point doesn't exist.",
        experimentalChatCompressionDesc: "Compresses the unused chat data and saves in seperate file. this greatly reduces the size of the chat data, and greatly improves the performance, however its experimental and can be unstable, causing issues in backup feature and more.",
        promptInfoInsideChatDesc: "When enabled, this stores prompt preset information in the chat metadata. The stored data includes the preset name, active toggles, and the prompt text. This may slightly increase processing time and storage usage.",
        autoAdjustSchema: "When enabled, it will automatically adjust the JSON schema for Dynamic Output.",
        dynamicMessages: "When enabled, it will allow the assistant to send multiple messages in a row, instead of one at a time.",
        dynamicMemory: "When enabled, assistant will make memory notes on response time. additional prompting is required to utilize this feature.",
        dynamicResponseTiming: "When enabled, it will adjust the response timing dynamically.",
        dynamicRequest: "When enabled, it will request to model at random timing without waiting for user input.",
        showTypingEffect: "When enabled, it will show a typing indicator while the assistant is generating a response.",
        dynamicOutputPrompt: "When enabled, the schema information will be included in the request."
    },
    setup: {
        chooseProvider: "Choose AI Provider",
        openaikey: "OpenAI with API Key (Recommended)",
        openaiProxy: "OpenAI Reverse proxy",
        setupmodelself: "Others / I will setup myself",
        inputApiKey: "Input API Key Here",
        apiKeyhelp: "You can get api key from: ",
        setupSelfHelp: "Setup yourself in settings, after Welcome screen ends.",
        theme: "Select your theme",
        themeDescWifulike: "Not suitable for mobile",
        themeDescWifuCut: "Suitable for mobile",
        themeDescClassic: "Suitable for All devices",
        texttheme: "Select your text color",
        inputName: "Lastly, Input your Nickname.",
        welcome: "Welcome to Risuai! I am Airisu, I am here guide you to setup Risuai. First, What may I call you?",
        welcome2: "Hello {username}! before we start, I will ask you some questions. You can change these settings later in settings.\n\nFirst select the AI provider.",
        openrouterProvider: "Openrouter has a lot of models, some of them unfiltered and some of them free, but it is not as good as OpenAI.",
        hordeProvider: "Horde is a free provider, but the response time is long and the quality is low.",
        setProviderLater: "There are other providers, but you can set it later in settings. select this if you want to set it later.",
        setupOpenAI: "To use OpenAI, you need to get an API key. \n1. go to https://beta.openai.com/ \n2. login with your account \n3. go to https://beta.openai.com/account/api-keys \n4. click 'Create New API Key' and name your key whatever you want. \n5. copy the key in the website.\n6. go back to Risuai\n7. paste it, and click send button.",
        setupClaude: "To use Claude, you need to get an API key.",
        setupClaudeSteps: [
            "Go to this URL and Login as Google",
            "Input your information and click 'Continue'",
            "On organization page, just input any name only at the first box, and click 'Create Account'",
            "Press 'Buy Credits' button",
            "Press 'Complete Setup' button",
            "Input just like the image above, except the country section, which you need to input your country. then press 'Continue'",
            "Add your payment method and press 'Continue'",
            "After payment has been registered, press 'Add Funds' and add funds. you can add minimum 5$, or you can setup auto add reload.",
            "After adding funds, go to the dashboard page and press 'Get API Keys' button",
            'Press "Create API Key" button',
            "Input just like the image above, and press 'Add'",
            "Copy the key, and paste it in here and send it.",
        ],
        setupOpenrouter: "To use Openrouter, you need to get an API key. \n1. go to https://openrouter.ai/keys\n2. click 'Create Key'\n3. set key name whatever you want.\n4. copy the key in the website\n5. go back to Risuai\n6. paste it, and click send button.",
        allDone: "All Done! please wait a moment.",
        setupLaterMessage: "Welcome {username}! do you want me to guide you to setup or do it yourself?",
        setupMessageOption1: "Guide me to setup",
        setupMessageOption1Desc: "Recommended for new users",
        setupMessageOption2: "I will setup myself",
        claudeDesc: "Claude is a AI model made by Antropic, competitor to OpenAI. its better than GPT if you want to use it in other languages than English.",
        openAIDesc: "OpenAI GPT is a high quality AI model, but it is paid and filtered, and weak in other than English.",
        chooseChatType: "Great! Now select the chat language.",
        chooseChatTypeOption1: "Full English",
        chooseChatTypeOption1Desc: "This will make AI to use English and input/output in English. Recommended for English speakers.",
        chooseChatTypeOption2: "English Processing",
        chooseChatTypeOption2Desc: "This will make AI to use English internaly, but input/output will be in your language. Recommended for non-English speakers.",
        chooseChatTypeOption3: "No Language Focused",
        chooseChatTypeOption3Desc: "This will make AI to use your language internaly, but this could make quality lower.",
        chooseCheapOrMemory: "By the way, do you prefer memory or cheapness?",
        chooseCheapOrMemoryOption1: "Memory",
        chooseCheapOrMemoryOption1Desc: "This will make AI to remember more, but it will quite expensive.",
        chooseCheapOrMemoryOption2: "Cheap",
        chooseCheapOrMemoryOption2Desc: "This will make AI to remember less, but it will be cheaper.",
        chooseCheapOrMemoryOption3: "Balanced",
        chooseCheapOrMemoryOption3Desc: "This will make AI to remember more than cheap, but less than memory.",
        chooseCheapOrMemoryOption4: "Unlimited",
        chooseCheapOrMemoryOption4Desc: "This will make AI to remember almost everything, but it will be very expensive.",
        finally: "Finally, do you want to enable advanced tools?",
        finallyOption1: "Yes",
        finallyOption1Desc: "This will enable advanced tools, but it will make the UI more complex. Recommended for advanced users.",
        finallyOption2: "No",
        finallyOption2Desc: "This will disable advanced tools, and make the UI more simple. Recommended for new users.",
        igpPrompt: "if IGP Prompt is not a blank, it will be executed after the main model request, after main model execution, as a emotion model, adding the result after the main model response."
    },
    triggerCategories: {
        "Special": "Special",
        "Control": "Control",
        "Chat": "Chat",
        "Low Level": "Low Level",
        "Alert": "Alert",
        "Lorebook V2": "Lorebook V2",
        "String": "String",
        "Data": "Data",
        "Array": "Array",
        "Others": "Others",
        "Deprecated": "Deprecated",
    },
    triggerDesc: {
        v2Header: "Header",
        v2HeaderDesc: "Header",
        v2If: "If",
        v2IfDesc: "If {{source}} {{condition}} {{target}}",
        v2Else: "Else",
        v2ElseDesc: "Else",
        v2EndIndent: "End Indent",
        v2EndIndentDesc: "End Indent",
        v2SetVar: "Set Variable",
        v2SetVarDesc: "Set Variable {{var}} {{operator}} {{value}}",
        v2Loop: "Loop Forever",
        v2LoopDesc: "Loop Forever",
        v2BreakLoop: "Break Loop",
        v2BreakLoopDesc: "Break Loop",
        v2RunTrigger: "Run Trigger",
        v2RunTriggerDesc: "Run Trigger {{target}}",
        v2ConsoleLog: "Console Log",
        v2ConsoleLogDesc: "Console Log {{source}}",
        v2StopTrigger: "Stop Trigger",
        v2StopTriggerDesc: "Stop Trigger",
        v2CutChat: "Cut Chat",
        v2CutChatDesc: "Cut Chat from {{start}} to {{end}}",
        v2ModifyChat: "Modify Chat",
        v2ModifyChatDesc: "Modify Chat at index {{index}} with {{value}}",
        v2SystemPrompt: "Add System Prompt",
        v2SystemPromptDesc: "Add System Prompt at {{location}} with {{value}}",
        v2Impersonate: "Send Chat",
        v2ImpersonateDesc: "Send Chat as {{role}} with {{value}}",
        v2Command: "Run Command",
        v2CommandDesc: "Run command with {{value}}",
        v2SendAIprompt: "Send AI Prompt",
        v2SendAIpromptDesc: "Send AI Prompt",
        v2ImgGen: "Image Generation",
        v2ImgGenDesc: "Generate image from {{value}}, negative from {{negValue}} => {{outputVar}}",
        v2CheckSimilarity: "Check Similarity",
        v2CheckSimilarityDesc: "Check similarity between {{source}} and {{value}} => {{outputVar}}",
        v2RunLLM: "Run Model",
        v2RunLLMDesc: "Send request to model from {{value}} => {{outputVar}}",
        v2ShowAlert: "Show Alert",
        v2ShowAlertDesc: "Show alert with {{value}}",
        v2ExtractRegex: "Extract Regex",
        v2ExtractRegexDesc: "Extract text from {{value}} with regex {{regexType}} {{regex}} and flags {{flagsType}} {{flags}}, then store result as {{resultType}} {{result}} => {{outputVar}}",
        v2RegexTest: "Regex Test",
        v2RegexTestDesc: "Test {{value}} with regex {{regex}} and flags {{flags}} => {{outputVar}}",
        v2GetLastMessage: "Get Last Message",
        v2GetLastMessageDesc: "Get Last Message => {{outputVar}}",
        v2GetMessageAtIndex: "Get Message at Index",
        v2GetMessageAtIndexDesc: "Get Message at Index {{index}} => {{outputVar}}",
        v2GetMessageCount: "Get Message Count",
        v2GetMessageCountDesc: "Get Message Count => {{outputVar}}",
        v2GetLorebook: "Get Lorebook",
        v2GetLorebookDesc: "Get Lorebook named {{target}} => {{outputVar}}",
        v2GetLorebookCount: "Get Lorebook Count",
        v2GetLorebookCountDesc: "Get Lorebook Count => {{outputVar}}",
        v2GetLorebookEntry: "Get Lorebook with index",
        v2GetLorebookEntryDesc: "Get Lorebook with index {{index}} => {{outputVar}}",
        v2SetLorebookActivation: "Set Lorebook Activation",
        v2SetLorebookActivationDesc: "Set Lorebook with index {{index}}'s activation state to {{value}}",
        v2GetLorebookIndexViaName: "Get Lorebook Index via Name",
        v2GetLorebookIndexViaNameDesc: "Get Lorebook Index via Name {{name}} => {{outputVar}}",
        v2ModifyLorebook: "Modify Lorebook",
        v2ModifyLorebookDesc: "Modify Lorebook named {{target}} with {{value}}",
        v2LoopNTimes: "Loop N Times",
        v2LoopNTimesDesc: "Loop {{value}} Times",
        v2Random: "Random",
        v2RandomDesc: "Random from {{min}} to {{max}} => {{outputVar}}",
        v2GetCharAt: "Get Character at Index",
        v2GetCharAtDesc: "Get Character at Index {{index}} from {{source}} => {{outputVar}}",
        v2GetCharCount: "Get Character Count",
        v2GetCharCountDesc: "Get Character Count from {{source}} => {{outputVar}}",
        v2ToLowerCase: "Convert to Lower Case",
        v2ToLowerCaseDesc: "Convert {{source}} to Lower Case => {{outputVar}}",
        v2ToUpperCase: "Convert to Upper Case",
        v2ToUpperCaseDesc: "Convert {{source}} to Upper Case => {{outputVar}}",
        v2SetCharAt: "Set Character at Index",
        v2SetCharAtDesc: "Set Character at Index {{index}} in {{source}} to {{value}} => {{outputVar}}",
        v2SplitString: "Split String",
        v2SplitStringDesc: "Split {{source}} by {{delimiter}} => {{outputVar}}",
        v2GetCharacterDesc: "Get Character Description",
        v2GetCharacterDescDesc: "Get Character Description => {{outputVar}}",
        v2SetCharacterDesc: "Set Character Description",
        v2SetCharacterDescDesc: "Set Character Description to {{value}}",
        v2GetPersonaDesc: "Get Persona Prompt",
        v2GetPersonaDescDesc: "Get Persona Prompt => {{outputVar}}",
        v2SetPersonaDesc: "Set Persona Prompt",
        v2SetPersonaDescDesc: "Set Persona Prompt to {{value}}",
        v2GetReplaceGlobalNote: "Get Replace Global Note",
        v2GetReplaceGlobalNoteDesc: "Get Replace Global Note => {{outputVar}}",
        v2SetReplaceGlobalNote: "Set Replace Global Note",
        v2SetReplaceGlobalNoteDesc: "Set Replace Global Note to {{value}}",
        v2GetAuthorNote: "Get Author Note",
        v2GetAuthorNoteDesc: "Get Author Note => {{outputVar}}",
        v2SetAuthorNote: "Set Author Note",
        v2SetAuthorNoteDesc: "Set Author Note to {{value}}",
        v2Comment: "Add Comment",
        v2CommentDesc: "{{value}}",
        v2DeclareLocalVar: "Declare Local Variable",
        v2DeclareLocalVarDesc: "Declare local variable {{var}} with value {{value}}",
        v2MakeArrayVar: "Make Array Variable",
        v2MakeArrayVarDesc: "Make Array Variable {{var}}",
        v2GetArrayVarLength: "Get Array Variable Length",
        v2GetArrayVarLengthDesc: "Get Length of Array Variable {{var}} => {{outputVar}}",
        v2GetArrayVar: "Get Array Variable",
        v2GetArrayVarDesc: "Get Value at Index {{index}} from Array Variable {{var}} => {{outputVar}}",
        v2SetArrayVar: "Set Array Variable",
        v2SetArrayVarDesc: "Set Value at Index {{index}} in Array Variable {{var}} to {{value}}",
        v2PushArrayVar: "Add to Array Variable",
        v2PushArrayVarDesc: "Add {{value}} to Array Variable {{var}}",
        v2PopArrayVar: "Remove last value from Array Variable and get",
        v2PopArrayVarDesc: "Remove last value from Array Variable {{var}} => {{outputVar}}",
        v2ShiftArrayVar: "Remove first value from from Array Variable and get",
        v2ShiftArrayVarDesc: "Remove first value from Array Variable {{var}} => {{outputVar}}",
        v2UnshiftArrayVar: "Add to Array Variable as first value",
        v2UnshiftArrayVarDesc: "Add {{value}} as first value of Array Variable {{var}}",
        v2SpliceArrayVar: "Add to Array Variable in Index",
        v2SpliceArrayVarDesc: "Add {{value}} as {{start}} value of Array Variable {{var}}",
        v2SliceArrayVar: "Slice Array Variable",
        v2SliceArrayVarDesc: "Slice Array Variable {{var}} from {{start}} to {{end}} => {{outputVar}}",
        v2GetIndexOfValueInArrayVar: "Get Index of Value in Array Variable",
        v2GetIndexOfValueInArrayVarDesc: "Get Index of {{value}} in Array Variable {{var}} => {{outputVar}}",
        v2RemoveIndexFromArrayVar: "Remove Index from Array Variable",
        v2RemoveIndexFromArrayVarDesc: "Remove Value at Index {{index}} from Array Variable {{var}}",
        v2JoinArrayVar: "Join Array",
        v2JoinArrayVarDesc: "Join Array {{var}} with {{delimiter}} => {{outputVar}}",
        v2MakeDictVar: "Make Dictionary Variable",
        v2MakeDictVarDesc: "Make Dictionary Variable {{var}}",
        v2GetDictVar: "Get Dictionary Value",
        v2GetDictVarDesc: "Get Value for Key {{key}} from Dictionary {{var}} => {{outputVar}}",
        v2SetDictVar: "Set Dictionary Value",
        v2SetDictVarDesc: "Set Value for Key {{key}} in Dictionary {{var}} to {{value}}",
        v2DeleteDictKey: "Delete Dictionary Key",
        v2DeleteDictKeyDesc: "Delete Key {{key}} from Dictionary {{var}}",
        v2HasDictKey: "Has Dictionary Key",
        v2HasDictKeyDesc: "Check if Dictionary {{var}} has Key {{key}} => {{outputVar}}",
        v2ClearDict: "Clear Dictionary",
        v2ClearDictDesc: "Clear Dictionary {{var}}",
        v2GetDictSize: "Get Dictionary Size",
        v2GetDictSizeDesc: "Get Size of Dictionary {{var}} => {{outputVar}}",
        v2GetDictKeys: "Get Dictionary Keys",
        v2GetDictKeysDesc: "Get All Keys from Dictionary {{var}} => {{outputVar}}",
        v2GetDictValues: "Get Dictionary Values",
        v2GetDictValuesDesc: "Get All Values from Dictionary {{var}} => {{outputVar}}",
        v2ConcatString: "Concatenate Strings",
        v2ConcatStringDesc: "Concatenate {{source1}} and {{source2}} => {{outputVar}}",
        v2GetLastUserMessage: "Get Last User Message",
        v2GetLastUserMessageDesc: "Get Last User Message => {{outputVar}}",
        v2GetLastCharMessage: "Get Last Character Message",
        v2GetLastCharMessageDesc: "Get Last Character Message => {{outputVar}}",
        v2GetFirstMessage: "Get First Message",
        v2GetFirstMessageDesc: "Get First Message => {{outputVar}}",
        v2GetAlertInput: "Get Alert Input",
        v2GetAlertInputDesc: "Get Alert Input => {{outputVar}}",
        v2GetAlertSelect: "Get Alert Select",
        v2GetAlertSelectDesc: "Get Alert Select {{display}} options {{value}} => {{outputVar}}",
        v2UnsupportedTrigger: "Unsupported Trigger",
        v2UnsupportedTriggerDesc: "Unsupported Trigger",
        v2GetDisplayState: "Get Display State",
        v2GetDisplayStateDesc: "Get Display State => {{outputVar}}",
        v2SetDisplayState: "Set Display State",
        v2SetDisplayStateDesc: "Set Display State to {{value}}",
        v2UpdateGUI: "Update GUI",
        v2UpdateGUIDesc: "Update GUI",
        v2UpdateChatAt: "Update Chat At Index",
        v2UpdateChatAtDesc: "Redraw chat at {{index}}",
        v2Wait: "Wait",
        v2WaitDesc: "Wait {{value}} seconds",
        v2GetRequestState: "Get Request Data Content",
        v2GetRequestStateDesc: "Get Request Content at {{index}} => {{outputVar}}",
        v2SetRequestState: "Set Request Data Content",
        v2SetRequestStateDesc: "Set Request Content at {{index}} to {{value}}",
        v2GetRequestStateRole: "Get Request Data Role",
        v2GetRequestStateRoleDesc: "Get Request Data Role at {{index}} => {{outputVar}}",
        v2SetRequestStateRole: "Set Request Data Role",
        v2SetRequestStateRoleDesc: "Set Request Data Role at {{index}} to {{value}}",
        v2GetRequestStateLength: "Get Request Data Length",
        v2GetRequestStateLengthDesc: "Get Request Data Length => {{outputVar}}",
        v2IfAdvanced: "If",
        v2IfAdvancedDesc: "If {{source}} {{condition}} {{target}}",
        v2QuickSearchChat: "Quick Search Chat",
        v2QuickSearchChatDesc: "Quick search {{value}} in chat with {{condition}} condition in {{depth}} depth => {{outputVar}}",
        v2StopPromptSending: "Stop Prompt Sending",
        v2StopPromptSendingDesc: "Stop Prompt Sending",
        v2Tokenize: "Tokenize",
        v2TokenizeDesc: "Tokenize {{value}} => {{outputVar}}",
        v2GetAllLorebooks: "Get All Lorebooks",
        v2GetAllLorebooksDesc: "Get all lorebook prompts as array => {{outputVar}}",
        v2GetLorebookByName: "Get Lorebook Indices by Name",
        v2GetLorebookByNameDesc: "Get lorebook indices array by name {{name}} => {{outputVar}}",
        v2GetLorebookByIndex: "Get Lorebook",
        v2GetLorebookByIndexDesc: "Get lorebook prompt at index {{index}} => {{outputVar}}",
        v2CreateLorebook: "Create Lorebook",
        v2CreateLorebookDesc: "Create lorebook with name {{name}}, key {{key}}, content {{content}}",
        v2ModifyLorebookByIndex: "Modify Lorebook",
        v2ModifyLorebookByIndexDesc: "Modify lorebook at index {{index}} with name {{name}}, key {{key}}, content {{content}}",
        v2DeleteLorebookByIndex: "Delete Lorebook",
        v2DeleteLorebookByIndexDesc: "Delete lorebook at index {{index}}",
        v2GetLorebookCountNew: "Get Lorebook Count",
        v2GetLorebookCountNewDesc: "Get total lorebook count => {{outputVar}}",
        v2SetLorebookAlwaysActive: "Set Lorebook Always Active",
        v2SetLorebookAlwaysActiveDesc: "Set lorebook at index {{index}} always active to {{value}}",
        v2Calculate: "Calculate",
        v2CalculateDesc: "Calculate {{expression}} => {{outputVar}}",
        v2ReplaceString: "Replace String",
        v2ReplaceStringDesc: "Replace {{source}} with regex {{regex}} to {{replacement}} => {{outputVar}}",
    },
    triggerInputLabels: {
        "value": "Value",
        "var": "Variable",
        "varName": "Variable Name",
        "outputVar": "Output Variable",
        "name": "Name",
        "index": "Index",
        "source": "Source",
        "target": "Target",
        "condition": "Condition",
        "operator": "Operator",
        "role": "Role",
        "location": "Location",
        "prompt": "Prompt",
        "model": "Model",
        "start": "Start",
        "end": "End",
        "min": "Min",
        "max": "Max",
        "delimiter": "Delimiter",
        "depth": "Depth",
        "key": "Key",
        "alertContent": "Alert Content",
        "options": "Options",
        "cmd": "Command",
        "regex": "Regex",
        "replacement": "Replacement",
        "flags": "Flags",
        "negPrompt": "Negative Prompt",
        "resultFormat": "Result Format",
        "activationKeys": "Activation Keys",
        "insertOrder": "Insert Order",
        "sysStart": "System Start",
        "sysHistoryEnd": "System History End",
        "sysPromptEnd": "System Prompt End",
        "addElse": "Add Else",
        "alwaysActive": "Always Active",
        "trigger": "Trigger",
        "triggerOn": "Trigger On",
        "valueTypeDesc": "Use directly input value",
        "varTypeDesc": "Use value stored in variable",
        "conditionEqual": "Equal (=)",
        "conditionNotEqual": "Not Equal (≠)",
        "conditionGreater": "Greater (>)",
        "conditionLess": "Less (<)",
        "conditionGreaterEqual": "Greater or Equal (≥)",
        "conditionLessEqual": "Less or Equal (≤)",
        "conditionSimilar": "Similar (≒)",
        "conditionContains": "Contains (∋)",
        "conditionIn": "In (∈)",
        "conditionNotContains": "Not Contains (∌)",
        "conditionNotIn": "Not In (∉)",
        "conditionTruthy": "Truthy (≡)",
        "operatorSet": "Set (=)",
        "operatorAdd": "Add (+=)",
        "operatorSubtract": "Subtract (-=)",
        "operatorMultiply": "Multiply (*=)",
        "operatorDivide": "Divide (/=)",
        "operatorModulo": "Modulo (%=)",
        "searchLoose": "Loose Search",
        "searchStrict": "Strict Search",
        "searchRegex": "Regex Search",
        "modelMain": "Main Model",
        "modelSub": "Sub Model",
        "roleUser": "User",
        "roleChar": "Character",
        "roleSystem": "System",
        "roleAssistant": "Assistant",
        "boolTrue": "True",
        "boolFalse": "False",
        "boolNull": "Null",
        "helpVarName": "Enter the name of the variable",
        "helpOutputVar": "Enter the variable name to store the result",
        "helpIndex": "Array or message index number",
        "helpRegex": "Enter regex pattern",
        "helpFlags": "Regex flags",
        "helpDelimiter": "Delimiter to split the string",
        "helpActivationKeys": "Comma-separated activation keywords",
        "helpInsertOrder": "Insert order",
        "helpDepth": "Depth of messages to search",
        "helpMinMax": "Min and max value range",
        "helpSlot": "Use {{slot}} to keep unchanged",
        "expression": "Expression"
    },
    confirm: "Confirm",
    goback: "Go Back",
    botSettings:'Bot Settings',
    model: "Model",
    apiKey: 'API Key',
    providerURL: 'Request URL',
    providerJSON: 'Request Body JSON',
    mainPrompt: "Main Prompt",
    jailbreakPrompt: "Jailbreak Prompt",
    globalNote: "Global Note",
    autoSuggest: "Auto Suggest",
    tokens: 'Tokens',
    maxContextSize: 'Max Context Size',
    maxResponseSize: 'Max Response Size',
    temperature: 'Temperature',
    frequencyPenalty: 'Frequency Penalty',
    presensePenalty: 'Presense Penalty',
    advancedSettings: 'Advanced Settings',
    advancedSettingsWarn: "Warn: If you don't know what the option does, don't change it!",
    formatingOrder: "Formating Order",
    authorNote: "Author's Note",
    firstMessage: 'First Message',
    description: 'Description',
    note: "Note",
    jailbreakToggle: 'Toggle Jailbreak',
    charIcon: "Character Icon",
    characterDisplay: "Character Display",
    viewScreen: 'Additional Character Screen',
    none: "None",
    emotionImage: "Emotion Images",
    noImages: "No Images",
    noBias: "No Bias",
    image: 'Image',
    name: 'Name',
    folderName: 'Folder Name',
    folderRemoveConfirm: 'This folder contains lorebooks. Are you sure you want to delete it and all its contents?',
    emotion: "Emotion Name",
    value: "Value",
    reroll: 'Regenerate',
    chatList: 'Chat List',
    removeChat: "Remove this message?",
    loreBook: 'Lorebook',
    character: "Character",
    Chat: "Chat",
    globalLoreInfo: "Character Lorebook applys to all chats in the character.",
    group: "Group",
    groupLoreInfo: "Group Lorebook applys to all chats in the group.",
    localLoreInfo: "Chat Lorebook only applies to the current chat.",
    removeConfirm: "Do you really want to remove: ",
    removeConfirm2: "Do you REALLY want to remove: ",
    exportConfirm: "Do you want to export this?",
    insertOrder: 'Insertion Order',
    activationKeys: 'Activation keys',
    activationKeysInfo: 'Comma seperated',
    prompt: 'Prompt',
    loreBookDepth: "Lorebook Search Depth",
    loreBookToken: "Lorebook Max Tokens",
    removeCharacter: "Remove Character",
    removeGroup: "Remove Group",
    exportCharacter: "Export Character",
    userSetting: "User Settings",
    username:'Your Name',
    userIcon: "Your Icon",
    successExport: "Successfuly exported and downloaded to your download directory",
    successImport: "Successfuly imported",
    importedCharacter: 'Imported Character',
    alwaysActive: "Always Active",
    additionalPrompt: "Additional Prompt",
    descriptionPrefix: "Description Prefix",
    forceReplaceUrl: "Reverse Proxy",
    emotionWarn: "Auxiliary model is used.",
    plugin: "Plugin",
    language: "Language",
    UiLanguage: "UI Language",
    createfromScratch: "Create from Scratch",
    importCharacter: 'Import Character',
    translator: "Translator",
    disabled: "Disabled",
    noPluginSelected: "Model selected as plugin, but no plugin selected.",
    text: "Text",
    UISize: "Chat Text Size",
    newVersion: "Update found, do you want to install?",
    display: "Display & Audio",
    useCustomBackground: "Custom Background",
    translateInput: "Translate Input",
    autoTranslation: "Auto Translation",
    fullscreen: "Fullscreen",
    playMessage:"Play Message Audio",
    iconSize: "Icon Size",
    createGroup: "Create Group Chat",
    groupIcon: "Group Icon",
    single: "Single",
    multiple: "Multiple",
    useCharLorebook: "Use Lores in Characters",
    selectChar: "Select Character",
    askLoadFirstMsg: "Shall we load the first message?",
    theme: "Theme",
    editOrder: "Edit Order",
    autoMode: "Auto Mode",
    submodel: "Auxiliary Model",
    timeOutinSec: "Timeout (in seconds)",
    emotionPrompt: "Emotion Prompt",
    singleView: "Single View",
    SpacedView: "Multiple Character View",
    emphasizedView: "Double Character View",
    pluginWarn: "Installing malicious plugins can cause problems.",
    pluginConfirm: "Do you really want to import this plugin? Only import plugins from trusted sources.",
    pluginContainsExternalMedia: "This plugin contains external media.",
    pluginContainsExternalJS: "This plugin contains external Javascript.",
    createGroupImg: "Generate group icon",
    waifuWidth: "Waifu Chat Width",
    savebackup: "Save Backup to google",
    loadbackup: "Load Backup from google",
    files: "Files",
    backupConfirm: "Do you really want to save backup?",
    backupLoadConfirm: "Do you really want to load backup? All datas will be lost!",
    backupLoadConfirm2: "Do you really, really want to load backup? All datas will be lost!",
    pasteAuthCode: "Please copy the auth code from popup and paste it in here:",
    others: "Others",
    presets: "Presets",
    imageGeneration: "Image Generation",
    provider: "Provider",
    key: "key",
    noData: "No Data",
    currentImageGeneration: "Current Image Generation Data",
    promptPreprocess: "Use Prompt Preprocess",
    SwipeRegenerate: "Use Swipe for Regeneration",
    instantRemove: "Remove subsequent when message remove",
    instantRemoveConfirm: "Do you want to remove just one message? If you select No, then the message after it will also be remove.",
    textColor: "Text Color",
    classicRisu: "Classic Risu",
    highcontrast: "High-Contrast",
    quickPreset: "You can quickly change preset by Ctrl + (Index of Preset)",
    requestretrys:"Request Retrys when Fail",
    utilityBot: "Utility Bot",
    ShowLog: "Show Request Logs",
    waifuWidth2: "Waifu Character Size",
    sayNothing:"Input 'say nothing' when no string inputed",
    regexScript: "Regex Script",
    type: "Type",
    editInput: "Modify Input",
    editOutput: "Modify Output",
    editProcess: "Modify Request Data",
    loadLatest: "Load Latest Backup",
    loadOthers: "Load Other Backups",
    exampleMessage: "Example Message",
    creatorNotes: "Creator's Comment",
    systemPrompt: "System Prompt",
    characterNotes: "Character Notes",
    personality: "Personality",
    scenario: "Scenario",
    alternateGreetings: "Alternate Greetings",
    unrecommended: "Not Recommended",
    chatNotes: "Chat Notes",
    showUnrecommended: "Show Unrecommended Settings",
    altGreet: "Alternative First Messages",
    scripts: "Scripts",
    settings: "Settings",
    selective: "Selective",
    SecondaryKeys: 'Secondary keys',
    useGlobalSettings: "Use Global Settings",
    recursiveScanning: "Recursive Scanning",
    creator: "Creator",
    CharVersion: "Character Version",
    Speech: "Speech",
    ToggleSuperMemory: "Toggle SupaMemory",
    SuperMemory:"SupaMemory",
    useExperimental: "Able Experimental Features",
    showMemoryLimit: "Show Memory Limit",
    showFirstMessagePages: "Show First Message Pages",
    roundIcons: "Round Icons",
    streaming: "Streaming",
    chatBot:'Chat Bot',
    otherBots:'Other Bots',
    user:"User",
    additionalAssets:"Additional Assets",
    editDisplay: "Modify Display",
    community: "Community",
    textBackgrounds: "Custom Text Screen Color",
    textBorder: "Text Outlines",
    textScreenRound: "Round Text Screen",
    textScreenBorder: "Text Screen Borders",
    ttsReadOnlyQuoted: "Read Only Quoted",
    ttsStop: "Stop TTS",
    askRemoval:"Ask Removal",
    replaceGlobalNote: "Global Note Replacement",
    charLoreBook: 'Character Lorebook',
    globalLoreBook: 'Global Lorebook',
    globalRegexScript: "Global Regex",
    accessibility: "Accessibility",
    sendWithEnter: "Send with Enter Key",
    fixedChatTextarea: "Fixed at the bottom of the chat window(When unchecked, Shift + Enter changes to send a message.)",
    clickToEdit: "Click Text to Edit",
    setNodePassword: "Set your password to security",
    inputNodePassword: "Input your password. if you can't remember, remove save/__password.txt in your server files and restart the server.",
    simple:"Simple",
    advanced: "Advanced",
    askReRollAutoSuggestions: "Re-Roll Auto Suggestions",
    creatingSuggestions: "Creating Suggestions...",
    orderByOrder: "Talk by Order",
    removeFromGroup: "Do you really want to remove {{char}} from group?",
    talkness: "Talkativeness",
    active: "Active",
    loreRandomActivation: "Use Probability Condition",
    activationProbability: "Probability",
    shareCloud: "Share to RisuRealm",
    hub: "RisuRealm",
    tags: "Tags",
    backgroundHTML: "Background Embedding",
    copied: "Copied",
    useChatCopy: "Use Chat Message Copy",
    useChatSticker: "Use Chat Sticker",
    useAdditionalAssetsPreview: "Use Additional Assets Preview",
    autoTranslateInput: "Auto Translate Input",
    enterMessageForTranslateToEnglish: "Enter Message for Translate to English",
    recent: 'Recent',
    downloads: 'Downloads',
    trending: "Trending",
    imageCompression: "Image Compression",
    notLoggedIn: "Not Logged in to Risu Account",
    googleDriveInfo: "Connect to google drive to sync your data.",
    googleDriveConnection: "Google Drive Connection",
    googleDriveConnected: "Google Drive Connected",
    SaveDataInAccount: "Save Data in Account",
    dataSavingInAccount: "Saving Data in Account",
    logout: "Logout",
    loadDataFromAccount: "Load Data from Account",
    saveCurrentDataToAccount: "Save Current Data to Account",
    chatAssumed: "",
    proxyAPIKey: "Key/Password",
    proxyRequestModel: "Request Model",
    officialWiki: "Official Wiki",
    officialWikiDesc: "Official Wiki for Risuai. feel free to see.",
    officialDiscord: "Official Discord",
    officialDiscordDesc: "Official Discord to talk about Risuai",
    confirmRecommendedPreset: "There is a recommended settings for this model. do you want to change the settings to that? (you can turn off asking in the accessiblity settings)",
    toggleConfirmRecommendedPreset: "Ask for recommended setting when model change",
    recommendedPreset: "Set to Recommended Settings",
    persona: "Persona",
    icon:"Icon",
    account: "Account",
    remove: "Remove",
    creationSuccess: "Creation Success",
    noweb: "This feature cannot be used on web version.",
    createBotInternet: "Create Bot from Internet with AI",
    createBotInternetAlert: "Please provide the character's name and the corresponding series/game.",
    able:"Able",
    assetWidth: "Asset Images Max Width",
    animationSpeed: "Animation Speed",
    screenshot: "Screenshot",
    screenshotSaved: "Screenshot Saved",
    inputBotGenerationPrompt: "Input Bot Generation Prompt",
    createBotAI: "Create OC Bot from AI",
    createBotwithAI: "Create Bot from AI",
    changeFolderName: "Input the new folder name (blank to cancel)",
    cancel: "Cancel",
    renameFolder: "Rename Folder",
    changeFolderColor: "Change Folder Color",
    changeFolderImage: "Change Folder Image",
    fullWordMatching: "Full Word Matching",
    botSettingAtStart: "Bot Menu when Launch",
    triggerStart: "On chat Send",
    triggerInput: "On user's output",
    triggerOutput: "On character's output",
    triggerManual: "Manual trigger only",
    triggerCondVar: "If Variable",
    triggerCondExists: "If Text Exists on Chat",
    triggerScript: "Trigger Script",
    triggerMatchRegex: "Match with Regex",
    triggerMatchLoose: "Match Loosely",
    triggerMatchStrict: "Match Strictly",
    searchDepth: "Search Depth",
    equal: "Equal to",
    notEqual: "Not Equal to",
    greater: "Greater than",
    less: "Less than",
    greaterEqual: "Greater or Equal to",
    lessEqual: "Less or Equal to",
    triggerEffSysPrompt: 'Add System Prompt',
    triggerEffSetVar: 'Modify Variable',
    triggerEffImperson: 'Send Chat',
    triggerEffCommand: 'Run Command',
    triggerEffRunTrigger: 'Run Trigger',
    triggerEffStop: 'Stop Sending Prompt',
    triggerEffCall: 'Call Trigger',
    varableName: "Variable Name",
    role: "Role",
    location: 'Location',
    promptstart: "Start of Prompt",
    promptend: "End of Prompt",
    historyend: "End of History",
    always: "Always",
    noEffect: "No Effect",
    invaildTriggerEffect: "This effect doesn't works for this trigger type.",
    operator: "Operator",
    TriggerSetToVar: "Set to Variable",
    TriggerAddToVar: "Add to Variable",
    TriggerSubToVar: "Subtract from Variable",
    TriggerMulToVar: "Multiply to Variable",
    TriggerDivToVar: "Divide from Variable",
    isNull: "is not set",
    ifChatIndex: "If chat index",
    ifRandom: "If random",
    ifValue: "If Value",
    hideRealm: "Hide RisuRealm",
    popularityLevel: "{} Popularity",
    colorScheme: "Color Scheme",
    rangeStart: "Range Start",
    rangeEnd: "Range End",
    untilChatEnd: "Until Chat End",
    usePromptTemplate: "Use Prompt Template",
    specialType: "Special Type",
    noSpecialType: "No Special Type",
    forceProxyAsOpenAI: "Force Proxy Format as OpenAI",
    promptTemplate: "Prompt Template",
    customInnerFormat: "Custom Inner Format",
    innerFormat: "Inner Format",
    HypaMemory: "HypaMemory",
    ToggleHypaMemory: "Toggle HypaMemory",
    resetPromptTemplateConfirm: "Do you really want to reset prompt template?",
    emotionMethod: "Emotion Method",
    continueResponse: "Continue Response",
    showMenuChatList: "Show Menu Chat List",
    translatorLanguage: "Translator Language",
    translatorType: "Translator Type",
    htmlTranslation: "HTML Translate",
    deeplKey: "deepL API Key",
    deeplFreeKey: "deepL Free API Key",
    deeplXUrl: "deepLX URL",
    deeplXToken: "deepLX Token",
    exportPersona: "Export Persona",
    importPersona: "Import Persona",
    export: "Export",
    import: "Import",
    supporterThanks: "Supporter Thanks",
    supporterThanksDesc: "Thank you for your support!",
    donatorPatreonDesc:"For default, it will not be shown in the list for privacy. if you want to show your nickname, go to Risuai's patreon page and press the link button.",
    useNamePrefix: "Use Name Prefix",
    textAdventureNAI: "Run as Text Adventure",
    appendNameNAI: "Append Name on NAI",
    customStopWords: "Custom Stop Words",
    defaultPrompt: "Default Prompt",
    additionalText: 'Additional Description',
    seed: "Seed",
    charjs: "CharacterJS",
    depthPrompt: "Depth Prompt",
    largePortrait: "Portrait",
    lorePlus: "LoreBook+",
    reverseProxyOobaMode: "Ooba Mode",
    joinMultiUserRoom: "Join MultiUser Room",
    exactTokens: "Exact Tokens",
    fixedTokens: "Approximate Tokens",
    inlayViewScreen: "Inlay Screen",
    imgGenPrompt: "Image Generation Prompt",
    imgGenNegatives: "Image Generation Negative Prompt",
    imgGenInstructions: "Image Generation Instructions",
    usePlainFetchWarn: "Please disable this option when using NovelAI, as it can cause CORS errors when using NovelAI.",
    translationPrompt: "Translation Prompt",
    translationResponseSize: "Translation Response Size",
    webdeeplwarn: "This option is not recommended for use with web version, as it can cause CORS errors.",
    saveBackupLocal: "Save Backup Locally",
    loadBackupLocal: "Load Backup Locally",
    topP: "Top P",
    genTimes: "Generation Choices",
    cot: "Chain of Thoughts",
    forcePlainFetch: "Force Plain Fetch",
    autoFillRequestURL: "Autofill Request URL",
    newOAIHandle: "New OpenAI Handling",
    oaiRandomUser: "Put OAI Random User",
    inlayImage: "Inlay Image Feature",
    nativeAutomark: "Experimental Native Automark",
    assistantPrefill: "Assistant Prefill",
    postEndInnerFormat: "Post End",
    sendChatAsSystem: "Send Chat as System",
    sendName: "Send Name on Non-group Chat",
    utilOverride: "Utility Override",
    template: "Template",
    chatAsOriginalOnSystem: "Send as original role",
    exportAsDataset: "Export Save as Dataset",
    editTranslationDisplay: "Edit Translation Display",
    selectModel: "Select Model",
    autoRemoveThoughtTag: "Remove Thought Tag",
    customChainOfThought: "Custom Chain of Thoughts",
    maxThoughtTagDepth: "Max Thought Tag Depth",
    openrouterFallback: "Openrouter Fallback",
    openrouterMiddleOut: "Openrouter Middle Out",
    geminiApiKey: "Gemini API Key",
    removePunctuationHypa: "Memory Punctuation Removal",
    memoryLimitThickness: "Memory Limit Thickness",
    inputCardPassword: "Input Card Password",
    ccv2Desc: 'Character Card V2 is a format widely used in chatbot programs.',
    ccv3Desc: 'Character Card V3 is a next generation format that is used in chatbot programs.',
    realmDesc: 'RisuRealm is a content sharing platform for Risuai. you can share your character to other users.',
    rccDesc: 'Risu Refined Character Card is a format with additional features like password, integrity check and etc.',
    password: "Password",
    license: "License",
    licenseDesc: "You can choose license for the downloaders to limit the usages of your card's prompt.",
    passwordDesc: "You can set a password to protect your card from unauthorized access.",
    largePersonaPortrait: "Persona Portrait",
    module: "Module",
    modules: "Modules",
    noModules: "No modules has been installed.",
    createModule: "Create Module",
    basicInfo: "Basic Info",
    moduleContent: "Module Content",
    confirmRemoveModuleFeature: "Do you really want to remove this feature? This action cannot be undone.",
    editModule: "Edit Module",
    importModule: "Import Module",
    download: "Download",
    edit: "Edit",
    enableGlobal: "Enable Globally",
    chatModulesInfo: "You can enable or disable modules for this chat. You can also enable for this character by right clicking or long pressing the enable button.", 
    sideMenuRerollButton: "Side Menu Reroll Button",
    persistentStorage: "Persistent Storage",
    persistentStorageSuccess: "Storage is successfully persisted",
    persistentStorageFail: "Storage is not persisted. Did you deny the request?, or is the browser not supported?",
    persistentStorageRecommended: "Persistent Storage Recommended",
    persistentStorageDesc: "Your browser supports persistent storage. this is recommended for better performance and user experience.",
    enable: "Enable",
    postFile: "Post File",
    requestInfoInsideChat: "Show Request Info Inside Chat",
    inputTokens: "Input Tokens",
    outputTokens: "Output Tokens",
    tokenWarning: "Token caculation can be inaccurate. it is recommended to use it as a reference.",
    log: "Log",
    popularityLevelDesc: "Popularity increases with downloads, etc. to estimate, 3.7 popularity is about 1 downloads.",
    additionalParams: "Additional Parameters",
    heightMode: "Height Mode",
    useAdvancedEditor: "Use Advanced Editor",
    noWaitForTranslate: "No Wait for Translate",
    updateRealm: "Update to RisuRealm",
    updateRealmDesc: "You are trying to update your character to RisuRealm. this will update your character to RisuRealm, and you can't revert it back.",
    antiClaudeOverload: "Anti-Claude Overload",
    activeTabChange: "Current tab is inactivated since other tab is active. to activate this tab, click OK",
    maxSupaChunkSize: "Max SupaMemory Chunk Size",
    addCharacter: "Add Character",
    importFromRealm: "Choose from RisuRealm",
    importFromRealmDesc: "Choose over 1000 characters in RisuRealm",
    random: "Random",
    metaData: "Meta Data",
    autoContinueMinTokens: "Target Tokens (Auto Continue)",
    autoContinueChat: "Anti-Incomplete Response (Auto Continue)",
    removeIncompleteResponse: "Remove Incomplete Sentences",
    tokenizer: "Tokenizer",
    chatFormating: "Chat Formating",
    useInstructPrompt: "Use Instruction Prompt",
    hanuraiMemory: "HanuraiMemory",
    playground: "Playground",
    textAreaSize: "Input Area Size",
    textAreaTextSize: "Input Area Text Size",
    sideBarSize: "Sidebar Size",
    embedding: "Embedding",
    syntax: "Syntax",
    run: "Run",
    noMessage: "Type something to start the chat.",
    combineTranslation : "Combine Translation",
    dynamicAssets: "Dynamic Assets",
    dynamicAssetsEditDisplay: "Use Dynamic Assets in Display",
    longTermMemory: "Long Term Memory",
    grid: "Grid",
    list: "List",
    trash: "Trash",
    trashDesc: "Deleted characters are moved to trash. you can restore or delete them permanently. deleted characters are automatically purged after 3 days.",
    shareExport: "Share/Export",
    risupresetDesc: "Risupreset format is a format specifically designed for Risuai presets.",
    risuMDesc: "RisuM format is a format that is specifically designed for Risuai modules.",
    jsonDesc: "JSON format is a format that is easy to read and write for both humans and machines.",
    nickname: "Nickname",
    useRegexLorebook: "Use Regex",
    customPromptTemplateToggle: "Custom Toggles",
    defaultVariables: "Default Variables",
    hypaAllocatedTokens: "Allocated Tokens",
    hypaChunkSize: "Chunk Size",
    hypaV2Desc: "HypaMemory V2 is a long-term memory system that use both summarized data and vector search.",
    supaDesc: "SupaMemory is a long-term memory system that uses summarized data to AI.",
    hanuraiDesc: "HanuraiMemory is a memory system that uses vector search.",
    lowLevelAccess: "Low Level Access",
    resultStoredVar: "Variable to Store Result",
    triggerEffRunLLM: "Run Main Model",
    triggerEffectSendAI: "Resend AI",
    triggerEffCheckSim: "Check Similarity",
    triggerEffShowAlert: "Show Alert",
    normal: "Normal",
    error: "Error",
    input: "Input",
    select: "Select",
    options: "Options",
    alertContent: "Alert Content",
    lowLevelAccessConfirm: "This content uses Low Level Access. which means this content can access the AI model and your storage directly. do you really want to import this content?",
    triggerLowLevelOnly: "This trigger only works with Low Level Access. to enable this trigger, enable Low Level Access in advanced settings in the character or module.",
    truthy: "Truthy",
    extractRegex: "Extract Text with Regex",
    runImgGen: "Run Image Generation",
    cutChat: "Cut Chat",
    modifyChat: "Modify Chat",
    regex: "Regex",
    flags: "Flags",
    resultFormat: "Result Format",
    negPrompt: "Negative Prompt",
    start: "Start",
    end: "End",
    index: "Index",
    search: "Search",
    goCharacterOnImport: "Go to Character on Realm Import",
    format: "Format",
    v2Warning: "Warning: V2 card is no longer supported. it may not contain all the data.",
    applyModule: "Apply Module",
    successApplyModule: "Module is successfully applied",
    font: "Font",
    lineHeight: "Line Height",
    loadAutoServerBackup: "Load Auto Server Backup",
    notCharxWarn: "This character uses multiple assets. it is recommended to export this character as a CharX format for better compatibility.",
    noPlugins: "No Plugins Installed",
    legacyTranslation: "Legacy Translation",
    clipboardSuccess: "Copied to Clipboard",
    translateContent: 'Translate Content',
    doNotTranslate: "Do Not Translate",
    includePersonaName: "Include Persona Name",
    hidePersonaName: "Hide Persona Name",
    triggerSwitchWarn: "If you change the trigger type, current triggers will be lost. do you want to continue?",
    codeMode: "Code",
    blockMode: "Block",
    helpBlock: "Help",
    hideChatIcon: "Hide Icon UI",
    loadInternalBackup: "Load Internal Backup",
    createCopy: "Create a Copy",
    bindPersona: "Bind Persona",
    chatOptions: "Chat Options",
    doYouWantToBindCurrentPersona: "Do you want to bind the current persona to this chat?",
    doYouWantToUnbindCurrentPersona: "Do you want to unbind the persona from this chat?",
    personaBindedSuccess: "Persona is successfully binded",
    personaUnbindedSuccess: "Persona is successfully unbinded",
    parameters: "Parameters",
    sizeAndSpeed: "Size and Speed",
    useLegacyGUI: "Use Legacy GUI",
    claudeCachingExperimental: "Claude Caching",
    openClose: "Open/Close",
    hideApiKeys: "Hide API Keys",
    unformatQuotes: "Disable Quote Formatting",
    enableDevTools: "Enable Dev Tools",
    selectFile: "Select File",
    namespace: "Namespace",
    moduleIntergration: "Module Integration",
    previewInfo: "This preview shows prompt before model-specific processing.",
    miscTools: "Misc Tools",
    promptConvertion: "Prompt Convertion",
    convertionStep1: "Select all file related to the prompt (Context, Instruct and Sampler JSON is supported)",
    customCSS: "Custom CSS",
    betaMobileGUI: "Beta Mobile GUI",
    menu: "Menu",
    connectionOpen: "Connection Open",
    connectionOpenInfo: "Multiuser room is opened. you can share the room code to other users. others can join the room by using the code inside playground > Join Multiuser Room.",
    createMultiuserRoom: "Create Multiuser Room",
    connectionHost: "You are the host of the room.",
    connectionGuest: "You are the guest of the room.",
    otherUserRequesting: "Other user is already requesting. try again later.",
    jsonSchema: "JSON Schema",
    enableJsonSchema: "Enable Schema",
    strictJsonSchema: "Strict Schema",
    extractJson: "Extract JSON",
    reloadSession: "Newer version of save data is found. reloading the session...",
    fixMarkdownNewline: "Fix Markdown Newline",
    customQuotes: "Custom Quotes",
    leadingSingleQuote: "Leading Single Quote",
    leadingDoubleQuote: "Leading Double Quote",
    trailingSingleQuote: "Trailing Single Quote",
    trailingDoubleQuote: "Trailing Double Quote",
    translatorNote: "Translator's Note",
    formatGroupInSingle: "Format Group in Single",
    groupInnerFormat: "Non-Speaker Inner Format",
    groupOtherBotRole: "Non-Speaker Role in Group",
    defineCustomGUI: "Define Custom GUI",
    chatHTML: "Chat HTML",
    logShare: "Show Share Log Button",
    preview: "Preview",
    recommended: "Recommended",
    newChat: "New Chat",
    predictedOutput: "Predicted Output",
    systemContentReplacement: "System Content Replacement",
    systemRoleReplacement: "System Role Replacement",
    seperateParameters: "Separate Parameters",
    seperateParametersEnabled: "Enable Separate Parameters",
    summarizationPrompt: "Summarization Prompt",
    translatorPrompt: "Translation Prompt",
    translateBeforeHTMLFormatting: "Translate Before HTML Formatting",
    retranslate: "Retranslate",
    loading: "Loading",
    autoTranslateCachedOnly: "Auto-translate Cached Messages Only",
    notification: "Notification",
    permissionDenied: "Permission Denied by Your Browser or OS",
    customFlags: "Custom Flags",
    enableCustomFlags: "Enable Custom Flags",
    googleCloudTokenization: "Google Cloud Tokenization",
    presetChain: "Preset Chain",
    legacyMediaFindings: "Legacy Media Findings",
    staticsDisclaimer: "The statistics are based on the data from after July 2024. the data may not be accurate.",
    subtitles: "Subtitles",
    subtitlesWarning1: "You must use model with audio/video input to use this feature.",
    subtitlesWarning2: "You must use model with streaming feature to use this feature.",
    reset: "Reset",
    assetMaxDifference: "Asset Max Difference",
    sourceLanguage: "Source Language",
    destinationLanguage: "Destination Language",
    noWebGPU: "Your Browser or OS doesn't support WebGPU. this will slow down the performance significantly.",
    menuSideBar: "Menu Side Bar",
    home: "Home",
    showSavingIcon: "Show Saving Icon",
    pluginVersionWarn: "This is {{plugin_version}} version of the plugin. which is not compatible with this version of Risuai. please update the plugin to {{required_version}} version.",
    imageTranslation: "Image Translation",
    banCharacterset: 'Auto Regenerate On Characterset',
    checkCorruption: "Check Corruption",
    showPromptComparison: "Show Prompt Comparison",
    inlayErrorResponse: "Inlay Error Response",
    triggerOn: "Trigger On",
    noConfig: "No Config",
    varName: "Variable Name",
    var: "Variable",
    condition: "Condition",
    trigger: "Trigger",
    outputVar: "Output Variable",
    source: "Source",
    cmd: "Command",
    sysStart: "System Start",
    sysHistoryEnd: "System History End",
    sysPromptEnd: "System Prompt End",
    target: "Target",
    addElse: "Add Else",
    min: "Min",
    max: "Max",
    delimiter: "Delimiter",
    deleteCount: "Delete Count",
    triggerEffRunAxLLM: "Run Auxiliary Model",
    hypaV3Settings: {
        descriptionLabel: "HypaMemory V3 is a long-term memory system that uses both summarization and vector search.",
        supaMemoryPromptPlaceHolder: "Leave it blank to use default",
        maxMemoryTokensRatioLabel: "Max Memory Tokens Ratio (Estimated)",
        maxMemoryTokensRatioError: "Unable to calculate Max Memory Tokens Ratio",
        memoryTokensRatioLabel: "Memory Tokens Ratio",
        extraSummarizationRatioLabel: "Extra Summarization Ratio",
        maxChatsPerSummaryLabel: "Max Messages Per Summary",
        recentMemoryRatioLabel: "Recent Memory Ratio",
        similarMemoryRatioLabel: "Similar Memory Ratio",
        randomMemoryRatioLabel: "Random Memory Ratio",
        enableSimilarityCorrectionLabel: "Enable Similarity Correction",
        preserveOrphanedMemoryLabel: "Preserve Orphaned Memory",
        applyRegexScriptWhenRerollingLabel: "Apply Regex Script When Rerolling",
        doNotSummarizeUserMessageLabel: "Do Not Summarize User Message",
    },
    hypaV3Modal: {
        titleLabel: "HypaV3",
        resetConfirmMessage: "This action cannot be undone. Do you want to reset HypaV3 data?",
        resetConfirmSecondMessage: "This action is irreversible. Do you really, really want to reset HypaV3 data?",
        convertLabel: "No summaries yet, but you may convert HypaV2 data to V3.",
        convertButton: "Convert to V3",
        convertSuccessMessage: "Successfully converted HypaV2 data to V3",
        convertErrorMessage: "Failed to convert HypaV2 data to V3: {0}",
        noSummariesLabel: "No summaries yet",
        searchPlaceholder: "Enter #N, ID, or query",
        summaryNumberLabel: "Summary #{0}",
        deleteThisConfirmMessage: "Delete this summary?",
        deleteAfterConfirmMessage: "Delete all summaries after this one?",
        deleteAfterConfirmSecondMessage: "This action cannot be undone. Are you really sure?",
        translationLabel: "Translation",
        rerolledSummaryLabel: "Rerolled Summary",
        rerolledTranslationLabel: "Rerolled Summary Translation",
        connectedMessageCountLabel: "Connected Messages ({0})",
        connectedFirstMessageLabel: "First Message",
        connectedMessageRoleLabel: "{0}'s Message",
        connectedMessageNotFoundLabel: "Message not found",
        connectedMessageLoadingError: "Error loading connected message: {0}",
        connectedMessageTranslationLabel: "Translation",
        nextSummarizationFirstMessageLabel: "First Message",
        nextSummarizationNoMessageIdLabel: "No Message ID",
        nextSummarizationLabel: "HypaV3 will summarize [{0}]",
        nextSummarizationNoMessagesFoundLabel: "WARN: No messages found",
        nextSummarizationLoadingError: "Error loading next summarization target: {0}",
        summarizationConditionLabel: "Tip: HypaV3 begins summarization when input tokens exceed the maximum context size.",
        emptySelectedFirstMessageLabel: "WARN: Selected first message is empty",
    },
    bulkEnabling: "Lorebook Bulk Enabling",
    showTranslationLoading: "Show Translation Loading",
    showDeprecatedTriggerV1: "Show Deprecated Trigger V1",
    showDeprecatedTriggerV2: "Show Deprecated Trigger V2",
    triggerV1Warning: "Trigger V1 is deprecated. it might be removed in the future.",
    copy: "Copy",
    paste: "Paste",
    depth: "Depth",
    returnCSSError: "Return CSS Error",
    alwaysActiveInChat: "Always Active (Current Chat)",
    childLoreDesc: "This is a copy of Character lore that remains 'Always Active' until removed or manually deactivated in the original.",
    thinkingTokens: "Thinking Tokens",
    antiServerOverload: "Anti-Server Overload",
    localActivationInGlobalLorebook: "Local Activation in Global Lorebook",
    cachePoint: "Cache Point",
    all: "All",
    showFolderNameInIcon: "Show Folder Name in Icon",
    claudeCachingRetrival: "Claude Caching Retrival",
    claudeCachingRetrivalDesc: "Extends the cache time for Claude Caching, by requesting every 4 minutes. this can reduce the cache miss rate, but it can increase the cost if its not used properly.",
    automaticCachePoint: "Automatic Cache Point",
    experimentalChatCompression: "Experimental Chat Data Handling",
    loadingChatData: "Loading Chat Data",
    outputImageModal: "Output Image Modal",
    playMessageOnTranslateEnd: "Play Audio on Translate Completion",
    seperateModelsForAxModels: "Seperate Models for Auxiliary Models",
    axModelsDef: "Ax Models Definition",
    doNotChangeSeperateModels: "Do Not Change Seperate Models on Preset Change",
    tools: "Tools",
    action: "Action",
    hotkey: "Hotkey",
    hotkeyDesc: {
        reroll: "Reroll",
        unreroll: "Undo Reroll",
        translate: "Translate",
        remove: "Remove",
        edit: "Edit",
        copy: "Copy",
        send: "Send",
        settings: "Settings",
        home: "Home",
        presets: "Quick Presets Select",
        persona: "Quick Persona Select",
        modelSelect: "Quick Model Select",
        toggleCSS: "Toggle CSS",
        prevChar: "Previous Character",
        nextChar: "Next Character",
        quickMenu: "Quick Menu",
        quickSettings: "Quick Settings",
        toggleVoice: "Toggle Voice",
        toggleLog: "Toggle Log",
        previewRequest: "Preview Request",
        import: "Import",
        export: "Export",
        webcam: "Toggle Webcam",
        focusInput: "Focus Input",
    },
    screenTooSmall: "Screen is too small to show the interface.",
    advancedModelSettings: "Advanced Model Settings",
    fallbackModel: "Fallback Model",
    fallbackWhenBlankResponse: "Fallback When Blank Response",
    doNotChangeFallbackModels: "Do Not Change Fallback Models on Preset Change",
    customModels: "Custom Models",
    igpPrompt: "IGP Prompt",
    useTokenizerCaching: "Tokenizer Caching",
    hypaMemoryV2Modal: "Hypa V2 Modal",
    hypaMemoryV3Modal: "Hypa V3 Modal",
    showMenuHypaMemoryModal: "Show Menu Hypa Modal",
    promptInfoInsideChat: "Add Prompt Info to Chat",
    promptTextInfoInsideChat: "Add Prompt Text to Chat",
    promptInfoEmptyMessage: "No prompt information is available for this message.",
    promptInfoEmptyToggle: "No custom toggles are currently active.",
    promptInfoEmptyText: "No prompt text has been saved.",
    escapeOutput: "Escape Output",
    claudeBatching: "Claude Batching",
    claude1HourCaching: "Claude 1 Hour Caching",    
    folderNameInput: "Please input the new folder name",
    folderRemoveLengthError: "To remove a folder, it must not contain any entries.",
    personaNote: "Persona Note",
    mcpAccessPrompt: "{{tool}} is trying to \"{{action}}\". do you want to allow this?",
    rememberToolUsage: "Remember tool usage",
    simplifiedToolUse: "Simplified tool usage",
    toolCalled: "Tool '{{tool}}' Called",
    static: "Static",
    dynamic: "Dynamic",
    assetStyle: "Asset Style",
    insertAssetPrompt: "Insert Asset Prompt",
    requestLocation: "Request Location",
    newImageHandlingBeta: "New Image Handling (Beta)",
    settingsExported: "Settings for bug report exported and copied to clipboard.",
    hideErrorDetails: "Hide Error Details",
    showErrorDetails: "Show Error Details",
    dynamicOutput: "Dynamic Output",
    autoAdjustSchema: "Auto Adjust Schema",
    dynamicMessages: "Dynamic Messages",
    dynamicMemory: "Dynamic Memory",
    dynamicResponseTiming: "Dynamic Response Timing",
    showTypingEffect: "Show Typing Effect",
    dynamicRequest: "Dynamic Request",
    dynamicOutputPrompt: "Dynamic Output Prompt",
    nightlyWarning: "## Nightly Builds\n\nYou are connecting to a nightly build of the software. This version is meant for testing and most likely contains bugs. **In this version, even if you encounter issues, we do not support resolving them directly.**",
    loginSionyw: "Login with Sionyw Account",
    pluginRiskDetectedAlert: "Risuai detected code that may be harmful which can STOLE YOUR API KEY OR PERSONAL DATA. we recommend you to NOT INSTALL THIS PLUGIN.",
    doNotInstall: "Do Not Install",
    continueAnyway: "Continue Anyway",
    pluginNoRiskButAlert: "Risuai did not detect harmful code, but please be aware that installing plugins from untrusted sources can pose security risks.",
    
    pluginRisksInuserFriendly : {
        eval: "Evaluating Code from Strings",
        globalAccess: "Accessing Global Variables",
        thisOutsideClass: "Using 'this' Outside of Class Context",
        errorInVerification: "Errors During Verification Process",
        storageAccess: "Accessing Storage",
    },
    pluginRisksInuserFriendlyDesc : {
        eval: "The plugin attempts to execute code from strings, strings can be obsucated to hide malicious code.",
        globalAccess: "The plugin tries to access global variables, which can lead to unintended side effects or security vulnerabilities.",
        thisOutsideClass: "The plugin uses 'this' keyword outside of class context, which can lead to unintended behavior or security issues.",
        errorInVerification: "There are errors during the verification process of the plugin, indicating potential issues with its functionality.",
        storageAccess: "The plugin attempts to access storage, which could lead to data leaks or unauthorized data manipulation.",
    },
    generatedByAIDisclaimer: "This content was generated by AI and may contain inaccuracies or biases.",
    aiGenerationWarning: "Contents will be AI generated and may contain inaccuracies or biases."
}
